<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>指南: 实施中的重要决策</title>
<meta content="Guideline" name="uma.type">
<meta content="important_decisions_in_implementation" name="uma.name">
<meta content="实施中的重要决策" name="uma.presentationName">
<meta name="element_type" content="other">
<meta content="description" name="filetype">
<meta name="role" content="">
<link type="text/css" href="./../../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=[{view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_zRigkAILEdq-_NKqZM1EhA", "_IY0NkAISEdqTna4sZVFRow", "_yd3ExNnmEdmO6L4XMImrsA", "1.0139590031965295E-304"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_kC0pcN7GEdm8G6yT7-Wdqw", "_yd3ExNnmEdmO6L4XMImrsA", "1.0139590031965295E-304"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_jD8dUAIbEdqEutyfYo0quQ", "_2ClPcDIcEdqDs_9ORT1Rig", "1.0139590031965295E-304"]}];
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="1.0139590031965295E-304"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">指南：实施中的重要决策</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../../images/guidance.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">本指南描述了在定制流程的“实施”方面时需考虑的一些重要事项。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">相关元素</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.base_rup/tasks/tailor_process_for_project_6CFD05E2.html" guid="{1BA9AAA0-DA89-4C14-B45A-CE28A8A10894}">为项目定制开发流程</a>
</li>
<li>
<a href="./../../../core.base_rup/disciplines/rup_implementation_discipline_263E22DB.html" guid="_yd3ExNnmEdmO6L4XMImrsA">实施</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">主要描述</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Top" name="Top"></a> 
<h3>
    <a id="Decide How to Use Artifacts" name="Decide How to Use Artifacts">决定如何使用工作产品</a>
</h3>
<p>
    决定要使用的工作产品以及使用这些工作产品的方式。除了确定要使用的工作产品之外，定制每个要使用的工作产品来适应项目需求也很重要。&nbsp;
</p>
<p>
    下表指定了建议使用哪些“实施”工作产品，以及其中哪些被认为是可选的（即，只能在某些情况下使用）。关于其他的定制注意事项，请参阅工作产品描述页面的定制部分。
</p>
<div align="center">
    <table     style="BORDER-RIGHT: rgb(128,128,128) 1px solid; BORDER-TOP: rgb(128,128,128) 1px solid; BORDER-LEFT: rgb(128,128,128) 1px solid; BORDER-BOTTOM: rgb(128,128,128) 1px solid"      cellspacing="0" bordercolordark="#808080" cellpadding="4" width="85%" bordercolorlight="#808080" border="1">
        <tbody>
            <tr>
                <th scope="col" width="20%">
                    工作产品
                </th>
                <th scope="col" width="40%">
                    <b>用途</b>
                </th>
                <th scope="col" width="40%">
                    <p>
                        <b>定制（可选，建议使用）</b>
                    </p>
                </th>
            </tr>
            <tr>
                <td width="20%">
                    <p>
                        <a class="elementLinkWithUserText" href="./../../../core.base_rup/workproducts/rup_implementation_model_5858DB65.html" guid="{157E9B67-C619-410D-A927-F2CD217BF8FE}">实施模型</a>
                    </p>
                    <blockquote>
                        <p>
                            （<a class="elementLinkWithUserText" href="./../../../core.base_rup/workproducts/rup_implementation_subsystem_118747E9.html" guid="{0F629848-C19E-49AB-A6C1-C8D6A094898A}">实施子系统</a>，<a class="elementLinkWithUserText" href="./../../../core.base_rup/workproducts/rup_implementation_element_49BB163E.html" guid="{E1E0DDA3-914F-4CC1-9D0A-ED4B8E8BBA89}">实施元素</a>）
                        </p>
                    </blockquote>
                </td>
                <td width="40%">
                    <p>
                        实施模型是指在运行时环境中构建和管理系统所需要的源代码、可执行程序和所有其他工作产品。
                    </p>
                    <p>
                        实施由实施元素组成，包括代码（源、二进制文件和可执行程序）和包含信息的文件（例如启动文件或自述文件）。
                    </p>
                    <p>
                        实施子系统是实施元素和其他实施子系统的集合，用来将实施模型分成几个较小的部分来进行构造。
                    </p>
                </td>
                <td width="40%">
                    <p>
                        所有软件项目都有一个实施模型，实施模型所具有的实施元素至少包括一些源代码和可执行程序。
                    </p>
                    <p>
                        有些项目还包括子系统、库和可视化模型。
                    </p>
                    <p>
                        如果要组织大量的实施元素，那么子系统就有用了。
                    </p>
                </td>
            </tr>
            <tr>
                <td width="20%">
                    <a class="elementLinkWithUserText" href="./../../../core.base_rup/workproducts/rup_integration_build_plan_31CE4B79.html" guid="{FA56B557-857D-4122-8E60-7A4A84418EB1}">集成构建计划</a>
                </td>
                <td width="40%">
                    定义组件的实施顺序、集成系统时要创建的工作版本以及它们的评估方式。<br />
                </td>
                <td width="40%">
                    <p>
                        可选。
                    </p>
                    <p>
                        如果需要计划集成，则建议使用。只有在集成不重要时才省略它。
                    </p>
                </td>
            </tr>
        </tbody>
    </table><br />
</div><br />
<h3>
    <a id="Decide Unit Test Coverage" name="Decide Unit Test Coverage">决定单元测试覆盖</a>
</h3>
<p>
    决定执行单元测试的程度以及代码覆盖的级别，它的规模可从非正式的一直到 100% 的代码覆盖。 此规模在<img alt="" src="./../../../images/no_rup.gif">&#160;<a class="elementLinkWithUserText" href="./../../../pages_not_installed/pages_not_installed.html" guid="{B95CA9FA-A00E-4C6C-AA16-133297812CC0}">测试计划</a>中有所描述。
</p>
<p>
    单元测试覆盖级别常常受集成和系统测试人员（代码移交给这些测试人员）需要的驱动。系统测试人员的工作取决于代码的质量。 如果代码的缺陷过多，集成和系统测试人员就会过于频繁地将代码发回给实施者。
    这是开发流程欠佳的信号，其解决方案可能就是要求实施者进行更彻底的单元测试。
</p>
<p>
    当然，您不能期望经过单元测试的代码完全没有缺陷。不过，您需要在单元测试和质量之间找到一个“稳健的”平衡。
</p>
<p>
    单元测试覆盖的级别在不同阶段之间也可能不同。即使是在构造和移交阶段需要 100% 代码覆盖的安全关键项目，通常在精化阶段也不需要这样，因为在该阶段有许多类只是部分实施。
</p>
<h3>
    <a id="Decide How to Review Code" name="Decide How to Review Code">决定如何复审代码</a>
</h3>
<p>
    决定代码的复审程度。&nbsp;
</p>
<p>
    代码复审的优点有：
</p>
<ul>
    <li>
        强迫和鼓励在项目中使用共同的编码风格。代码复审是一种使项目成员遵循编程指南的有效方式。为确保这一点，复审所有作者和实施者的结果比复审所有源代码文件更显重要。
    </li>
    <li>
        查找自动化测试未能发现的错误。代码复审可发现在测试中未遇到的错误。
    </li>
    <li>
        在个人之间共享知识，以及将知识从更有经验的人传递到经验较少的人。
    </li>
</ul>
<p>
    代码复审的缺点有：
</p>
<ul>
    <li>
        它会耗费时间和资源。
    </li>
    <li>
        如果执行不当，则可能缺乏效率。存在这样一种危险：即认为之所以进行代码复审，“是因为我们必须这样做”，而不是将其作为自动测试的有效补充。
    </li>
</ul>
<p>
    关于代码复审的更多信息，另请参阅<a class="elementLinkWithUserText" href="./../../../core.base_rup/tasks/review_code_27AD7580.html" guid="{9EC0DF69-EEE1-4B41-8F48-9FB6B0DB7F72}">任务：复审代码</a>。
</p>
<p>
    代码复审对项目有着重要的意义。所有开始度量代码复审相关错误和维护问题级别的项目，均称它们因为复审而提高了绩效。 然而，在许多组织中，代码复审却由于以下几个原因而很难“展开”：
</p>
<ul>
    <li>
        未收集足够数据来验证代码复审是否实际起作用。
    </li>
    <li>
        收集的数据过多。
    </li>
    <li>
        实施者对他们的代码的防护意识过强。
    </li>
    <li>
        复审陷入形式上的困境。
    </li>
    <li>
        管理复审事宜耗费过多的工作。
    </li>
</ul>
<p>
    请记住以下几点，以尽可能充分利用代码复审：
</p>
<ul>
    <li>
        只收集适量的数据。
    </li>
    <li>
        度量复审的成绩，并显示结果。
    </li>
    <li>
        以“简洁”的方式使用复审。
    </li>
</ul>
<p>
    关于复审级别的更多信息，请参阅<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/guidelines/review_levels_72ACB304.html" guid="8.546224914239529E-306">指南：复审级别</a>。
    &nbsp;<br />
</p></td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2006. &nbsp;All Rights Reserved.
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
				contentPage.onload();
			</script>
</html>
